package com.lds.register.center.server.business.app.service;

import com.lds.management.center.common.model.db.OrderBy;
import com.lds.management.center.common.model.db.PageResult;
import com.lds.management.center.common.model.dto.ResultDTO;
import com.lds.register.center.common.model.app.request.AppBaseBatchCreateRequest;
import com.lds.register.center.common.model.app.request.AppBaseBatchDeleteRequest;
import com.lds.register.center.common.model.app.request.AppBaseBatchUpdateRequest;
import com.lds.register.center.common.model.app.request.AppBaseCreateRequest;
import com.lds.register.center.common.model.app.request.AppBaseDeleteRequest;
import com.lds.register.center.common.model.app.request.AppBaseGetByIdRequest;
import com.lds.register.center.common.model.app.request.AppBaseGetByIdsRequest;
import com.lds.register.center.common.model.app.request.AppBaseGetByKeyRequest;
import com.lds.register.center.common.model.app.request.AppBaseListPageRequest;
import com.lds.register.center.common.model.app.request.AppBaseListRequest;
import com.lds.register.center.common.model.app.request.AppBaseUpdateRequest;
import com.lds.register.center.common.model.app.response.AppBaseBatchCreateResponse;
import com.lds.register.center.common.model.app.response.AppBaseBatchDeleteResponse;
import com.lds.register.center.common.model.app.response.AppBaseBatchUpdateResponse;
import com.lds.register.center.common.model.app.response.AppBaseDeleteResponse;
import com.lds.register.center.common.model.app.response.AppBaseListResponse;
import com.lds.register.center.common.model.app.response.AppBaseResponse;
import com.lds.register.center.server.business.app.entity.App;


/**
 * 基础服务类
 *
 * @author lidongsheng
 * @since 2025-06-26
 */
public interface AppBaseService {
    /**
     * 创建
     */
    ResultDTO<AppBaseResponse> createApp(AppBaseCreateRequest request);

    /**
     * 批量创建
     */
    ResultDTO<AppBaseBatchCreateResponse> batchCreateApp(AppBaseBatchCreateRequest request);

    /**
     * 删除
     */
    ResultDTO<AppBaseDeleteResponse> deleteApp(AppBaseDeleteRequest request);

    /**
     * 批量删除
     */
    ResultDTO<AppBaseBatchDeleteResponse> batchDeleteApp(AppBaseBatchDeleteRequest request);

    /**
     * 更新
     */
    ResultDTO<AppBaseResponse> updateApp(AppBaseUpdateRequest request);

    /**
     * 批量更新
     */
    ResultDTO<AppBaseBatchUpdateResponse> batchUpdateApp(AppBaseBatchUpdateRequest request);

    /**
     * 根据ID查询
     */
    ResultDTO<AppBaseResponse> getAppById(AppBaseGetByIdRequest request);

    /**
     * 根据ID集合查询
     */
    ResultDTO<AppBaseListResponse> getAppByIds(AppBaseGetByIdsRequest request);

    /**
     * 根据业务主键查询
     */
    App getAppByKey(AppBaseGetByKeyRequest request);

    /**
     * 查询
     */
    ResultDTO<AppBaseListResponse> listApp(AppBaseListRequest request);

    /**
     * 查询所有
     */
    ResultDTO<AppBaseListResponse> listAllApp(OrderBy orderBy);

    /**
     * 分页查询
     */
    ResultDTO<PageResult<AppBaseResponse>> listAppPage(AppBaseListPageRequest request);


    /***************************** 异步尝鲜 谨慎使用[性能提升10倍以上] start ******************************/

    /**
     * 异步批量创建
     */
    ResultDTO<AppBaseBatchCreateResponse> batchCreateAppAsync(AppBaseBatchCreateRequest request);

    /**
     * 异步批量删除
     */
    ResultDTO<AppBaseBatchDeleteResponse> batchDeleteAppAsync(AppBaseBatchDeleteRequest request);

    /**
     * 异步批量更新
     */
    ResultDTO<AppBaseBatchUpdateResponse> batchUpdateAppAsync(AppBaseBatchUpdateRequest request);

    /***************************** 异步尝鲜 谨慎使用[性能提升10倍以上] end ******************************/
}